// 函数组合 调试
// NEVER SAY DIE --> never-say-die 

const _ = require('lodash');

//辅助函数,但对含有多个的函数组合则会导致打印结果不清晰
// const log = v => {      
//     console.log(v);
//     return v;
// }

//改造辅助函数  第一个参数为检测的函数标记  第二个参数为打印结果
const trace = _.curry((tag, v) => {
    console.log(tag, v);
    return v;
})

//使用柯里化改造split 
// _.split()
const split = _.curry((sep, str) => _.split(str,sep));

// _.toLower()

//使用柯里化改造jion
const join = _.curry((sep, array) => _.join(array, sep));

//使用柯里化改造map
const map = _.curry((fn, array) => _.map(array, fn));

//可以在两函数之间插入一个函数用于打印结果 如log
//toLower 使得数组变成小写的同时变成了字符串   
//应使用map  可对数组的每一项进行处理并返回数组
// const f = _.flowRight(join('-'), log, _.toLower, split(' '));      //n-e-v-e-r-,-s-a-y-,-d-i-e
const f = _.flowRight(join('-'), trace('map 之后'), map(_.toLower), trace('split 之后'), split(' '));

console.log(f('NEVER SAY DIE'));        